﻿using System;

namespace Taste
{
    internal interface ICurrentStateImpl<TState, TTrigger> : ICurrentState<TState, TTrigger>
        where TState : struct
        where TTrigger : struct
    {
        void Entered();
        void Leaving(IStateTransition<TState> transition);
        void GoingToNextState();
        
        void ErrorHappened(IStateError<TState> error);

        bool? CanFire(TTrigger trigger, object parameter);
        bool Fire(TTrigger trigger, object parameter);
    }
}
